﻿#include<stdio.h>
//
//int a(int arr[], int len, int b)
//{
//	int left = 0;
//	int right = len - 1;
//	int mid = left + ((right - left) >> 1);
//	while (left <= right)
//	{
//		int mid = left + ((right - left) >> 1);
//		if (arr[mid] > b)
//		{
//			right = mid - 1;
//		}
//		else if (arr[mid] == b)
//		{
//			return mid;
//		}
//		else
//		{
//			left = mid + 1;
//		}
//	}
//	return -1;
//}
//void b(int arr[], int len)
//{
//	int right = len - 1;
//	int left = 0;
//	while (left < right)
//	{
//		int temp = arr[right];
//		arr[right] = arr[left];
//		arr[left] = temp;
//		right--;
//		left++;
//	}
//}
//void print(int arr[], int len)
//{
//	int i = 0;
//	for (i; i < len; i++)
//	{
//		printf("%d", arr[i]);
//	}
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	int ret=a(arr, len, 6);
//	if (ret != -1)
//	{
//		printf("找到该数据：%d\n", arr[ret]);
//		printf("下标是：%d\n", ret);
//	}
//	b(arr, len);
//	print(arr, len);
//	return 0;
//}
//​
//;
//struct b
//{
//	char a;
//	int c;
//};
//struct Student
//{
//	char name[20];
//	struct b;
//	int age;
//	int high;
//	float school;
//
//}s4,s5,s6;//分号不能少
//
//struct Student s7;
//int main()
//{
//	struct Student s1 = { "zhangsan",{'a',1},20,180,85.5f};
//	struct Student s2 = { .age = 30,.high = 175, };
//	printf("%s %d", s1.name,s1.c);
//}
//int main()
//{
//	char a = 3;//char是signed char
//	//00000000000000000000000000000011
//	//00000011 -实际存在a里的
//	char c = 127;
//	//00000000000000000000000001111111
//	//01111111 -实际存在c里的
//	char b = a + c;
//	//00000000000000000000000000000011 -a整形提升
//	//00000000000000000000000001111111 -c整形提升
//	//                                  如何进⾏整体提升呢？
//	                                   //1. 有符号整数提升是按照变量的数据类型的符号位来提升的，往往第一位是符号位
//		                               //2. 无符号整数提升，⾼位补0
//	//00000000000000000000000010000010
//	//存在b里就是             10000010
//	//%d  是以十进制的方式打印有符号的整数
//	//c提升》
//	//11111111111111111111111110000010
//	//得到补码再找回原码》两种方法》正数补原一样
//	// 负数：
//	// 1.先反再+1
//	//10000000000000000000000001111101
//	//10000000000000000000000001111110---原码
//	// 2.先-1后反
//	//11111111111111111111111110000001
//	//10000000000000000000000001111110 得-126
//	printf("%d",b);
//}
//int fun()
//{
//	static int count = 1;
//	return ++count;
//
//}
//
//int main()
//{
//	int a;
//	a = fun() - fun() * fun();
//	printf("%d\n", a);
//	return 0;
//}
//int main()
//{
//	int i = 1;
//	int ret = (++i) + (++i) + (++i);
//	printf("%d\n", i);
//	printf("%d\n", ret);
//	return 0;
//}
//int main()
//{
//	int a = 10;
//	//&a  ----&取地址操作符
//	printf("%p", &a);
//
//	int* p = &a;//p是个指针变量，是一块空间用于存放指针
//
//	* p = 0;
//	printf("%d", p);
//
//	return 0;
//
//// }
//int main()
//{
//	printf("%zd\n", sizeof(char*));
//	printf("%zd\n", sizeof(int*));
//	printf("%zd\n", sizeof(float*));
//	printf("%zd\n", sizeof(double*));
//	printf("%zd\n", sizeof(short*));
//	return 0;
//}
//int main()
//{
//	int a = 0x11223344;
//	int* pa = &a;
//	*pa = 0;
//	return 0;
//}
////int main()
//{
//	int a = 10;
//	int* pa = &a;
//	int* pb = &a;
//
//	printf("pa  =%p\n", pa);
//	printf("pa+1  =%p\n", pa+1);
//
//	printf("pb  =%p\n", pb);
//	printf("pb  =%p\n", pb+1);
//	return 0;
//}
//int main()
//{
//	const int a = 10;
//
//	int* p = &a;
//	*p = 0;
//	printf("a=%d\n", a);
//	return 0;
//}

//int main()
//{
//	int a = 1;
//	int b = 0;
//
//	int const*  p = &a;
//	*p = 100;//err
//	p = &b;
//	return 0;
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	for (i; i < 10; i++)
//	{
//		printf("%d", arr[i]);
//	}
//	return 0;
//}
//int main()
//{
//	int arr[] = { 0,0,0,0,0,0,0,0,0,0, };
//	int a = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[0];
//	int i = 0;
//	for (i; i < a; i++)
//	{
//		printf("%d", *(p+i));
//		
//	}
//
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	printf("%d\n", &arr[9] - &arr[0]);
//	return 0;
//
//}
//int my_strlen(char* str)
//{
//	int i = 0;
//	while (1)
//	{
//		str++;
//		i++;
//		if (*str == '\0')
//		{
//			return i;
//		}
//	}
//
//}
//int my_strlen(char* str)
//{
//	char* start = str;
//	while (*str !='\0')
//	{
//		str++;
//	}
//	return str - start;
//}
//int main()
//{
//	char arr[] = "abcdef";
//
//	int len = my_strlen(arr);
//	printf("%d", len);
//	return 0;
//}

//int main()
//{
//	int arr[] = {1,2,3,4,5,6,7,8,9,10};
//	int* p = arr;
//	int a = sizeof(arr) / sizeof(arr[0]);
//	while (p < arr + a)
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p=arr;
//	
//	int i = 0;
//	for (i; i <= 10; i++)
//	{
//
//		printf("%d", *(p+i));
//	}
//	return 0;
//}
//int* test()
//{
//	int a = 10;
//	return &a;
//}
//int main()
//{
//	int* p = test();
//	printf("%d", *p);
//	return 0;
//}
//#define NDEBUG
#include<assert.h>
//int main()
//{
//	int* p = NULL;
//
//	assert(p != NULL);
//
//	return 0;
//}
//size_t my_strlen(const char* arr)
//{
//	size_t count = 0;
//	char* p = arr;
//	assert(arr != NULL);
//	while (*p != '\0')
//	{
//		count++;
//		p++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[] = "abceef";
//	size_t len = my_strlen(arr);
//	printf("%zd", len);
//	return 0;
//}
void arr(int* x, int* y)
{
	
	int tmp = *y;
	*y = *x;
	*x = tmp;
}
int main()
{
	int a = 1;
	int b = 0;
	arr(&a, &b);
	printf("%d %d", a, b);
	return 0;
}